package aerolineas;

import java.util.List;

import com.oceanic.AerolineaOceanic;
import com.oceanic.AsientoDTO;

import static aerolineas.MockOceanic.*;

public class OceanicWrapper {
	private AerolineaOceanic oceanic;
	private static boolean testing = false;
	
	private OceanicWrapper() {
		if(testing ) {
			this.oceanic = mockOceanic();
		}
		else {
			this.oceanic = AerolineaOceanic.getInstance();
		}
	}
	
	public static void setTestMode() {
		testing = true;
	}
	
	public static OceanicWrapper getInstance() {
		return new OceanicWrapper();
	}

	public List<AsientoDTO> asientosDisponiblesParaOrigenYDestino(
			String origen, String destino, String fechaDeSalida) {
		return this.oceanic.asientosDisponiblesParaOrigenYDestino(origen, destino, fechaDeSalida);
	}

	public List<AsientoDTO> asientosDisponiblesParaOrigen(String origen,
			String fechaDeSalida) {
		return this.oceanic.asientosDisponiblesParaOrigen(origen, fechaDeSalida);
	}

	public boolean estaReservado(String codigoDeVuelo, Integer numeroDeAsiento) {
		return this.oceanic.estaReservado(codigoDeVuelo, numeroDeAsiento);
	}

	public boolean reservar(String dni, String codigoDeVuelo,
			Integer numeroDeAsiento) {
		return this.oceanic.reservar(dni, codigoDeVuelo, numeroDeAsiento);
	}

	public boolean comprarSiHayDisponibilidad(String dni, String codigoDeVuelo,
			Integer numeroDeAsiento) {
		return this.oceanic.comprarSiHayDisponibilidad(dni, codigoDeVuelo, numeroDeAsiento);
	}
}
